package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.AreaMonitorParams;
import com.yuandian.api.customer_perception.vo.AreaOverviewListVo;
import com.yuandian.api.customer_perception.vo.AreaTopVo;
import com.yuandian.api.customer_perception.vo.HallOverviewListVo;
import com.yuandian.api.customer_perception.vo.OperatorOverviewListVo;
import com.yuandian.po.MultipleTableInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p> 地市监控mapper接口 </p>
 *
 * @Author: LinSheHi
 * @Date: 2021/8/16 10:03
 */
@Mapper
public interface AreaMonitorMapper {

    /**
     * 客户感知-地市监控总览-查询地市总数
     * @param params 请求参数
     * @param tableInfos 表名
     * @return vo对象集合
     */
    List<Map<String, String>> queryAreaCount(@Param("params") AreaMonitorParams params,
                                             @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-查询办事处总数
     * @param params 请求参数
     * @param tableInfos 表名
     * @return vo对象集合
     */
    Integer queryHallCount(@Param("params") AreaMonitorParams params,
                           @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-查询操作员总数
     * @param params 请求参数
     * @param tableInfos 表名
     * @return vo对象集合
     */
    Integer queryOperatorCount(@Param("params") AreaMonitorParams params,
                               @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-全地市受理量TOP5
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<AreaTopVo> queryAllAreaCompleteCountTop(@Param("params") AreaMonitorParams params,
                                                 @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-全地市告警量TOP5
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<AreaTopVo> queryAllAreaAlarmCountTop(@Param("params") AreaMonitorParams params,
											  @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-全地市总览列表
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<AreaOverviewListVo> queryAllAreaOverviewList(Page<AreaOverviewListVo> page,
                                                      @Param("params") AreaMonitorParams params,
                                                      @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-办事处总览列表
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<HallOverviewListVo> queryAllHallOverviewList(Page<HallOverviewListVo> page,
                                                      @Param("params") AreaMonitorParams params,
                                                      @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-操作员总览列表
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<OperatorOverviewListVo> queryAllOperatorOverviewList(Page<OperatorOverviewListVo> page,
                                                              @Param("params") AreaMonitorParams params,
                                                              @Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-全地市总览列表下载
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<AreaOverviewListVo> queryAllAreaOverviewListExport(@Param("params") AreaMonitorParams params,
															@Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-办事处总览列表下载
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<HallOverviewListVo> queryAllHallOverviewListExport(@Param("params") AreaMonitorParams params,
															@Param("tableInfos") List<MultipleTableInfo> tableInfos);

    /**
     * 客户感知-地市监控总览-操作员总览列表下载
     * @param params 请求参数
     * @param tableInfos 表名
     * @return 通用返回对象
     */
    List<OperatorOverviewListVo> queryAllOperatorOverviewListExport(@Param("params") AreaMonitorParams params,
																	@Param("tableInfos") List<MultipleTableInfo> tableInfos);

}
